home *** CD-ROM | disk | FTP | other *** search
/ Programming a Multiplayer FPS in DirectX / Programming a Multiplayer FPS in DirectX (Companion CD).iso / DirectX / dxsdk_oct2004.exe / dxsdk.exe / Samples / C++ / Direct3D / EffectEdit / UIElements.h < prev   
Encoding:
C/C++ Source or Header  |  2004-09-27  |  3.8 KB  |  121 lines

  1. #if !defined(AFX_UIELEMENTS_H__5E5BABDA_4318_4644_8CCA_A0599B3925DF__INCLUDED_)
  2. #define AFX_UIELEMENTS_H__5E5BABDA_4318_4644_8CCA_A0599B3925DF__INCLUDED_
  3.  
  4. #if _MSC_VER > 1000
  5. #pragma once
  6. #endif // _MSC_VER > 1000
  7. // UIElements.h : header file
  8. //
  9.  
  10. class CUIElement;
  11.  
  12. /////////////////////////////////////////////////////////////////////////////
  13. // CUIElements 
  14.  
  15. class CUIElements : public CObject
  16. {
  17. private:
  18.     CObList m_UIElementList;
  19.     ID3DXEffect* m_pEffect;
  20.  
  21. public:
  22.     FLOAT m_fObjectRadius;
  23.     D3DXMATRIXA16 m_matView;
  24.     D3DXMATRIXA16 m_matProj;
  25.     UINT m_bbWidth;
  26.     UINT m_bbHeight;
  27.     ID3DXFont* m_pd3dFont;
  28.     LPD3DXMESH m_pMeshArrow;
  29.  
  30. public:
  31.     CUIElements();
  32.     ~CUIElements();
  33.     HRESULT OnCreateDevice( LPDIRECT3DDEVICE9 pd3dDevice );
  34.     HRESULT OnResetDevice( LPDIRECT3DDEVICE9 pd3dDevice );
  35.     void OnLostDevice();
  36.     void OnDestroyDevice();
  37.     HRESULT Render( IDirect3DDevice9 *pd3dDevice );
  38.     HRESULT RenderArrow( BOOL bSelected );
  39.  
  40.     void SetInfo( UINT bbWidth, UINT bbHeight, D3DXMATRIX* pMatProj );
  41.     void SetMatView( D3DXMATRIX* pMatView );
  42.     void SetObjectRadius( FLOAT fObjectRadius ) { m_fObjectRadius = fObjectRadius; }
  43.     void SetEffectParameters( LPD3DXEFFECT pEffect );
  44.     void InitEffectObjects( LPD3DXEFFECT pEffect );
  45.     void DeleteEffectObjects();
  46.     void DeleteAllElements();
  47.  
  48.     void HandleMouseDown( INT x, INT y, BOOL* pbSetCapture );
  49.     void HandleMouseMove( INT x, INT y );
  50.     void HandleMouseUp();
  51.     BOOL IsDragging();
  52.  
  53.     BOOL FindElement( CString& strAnnotName, CUIElement** ppElement );
  54. };
  55.  
  56. /////////////////////////////////////////////////////////////////////////////
  57. // CUIElement
  58. class CUIElement : public CObject
  59. {
  60. protected:
  61.     CString m_strParamName;
  62.     CString m_strAnnotName;
  63.     D3DXHANDLE m_hParam;
  64.  
  65. public:
  66.     CUIElement() { m_hParam = NULL; }
  67.  
  68.     virtual void Render( IDirect3DDevice9* pd3dDevice ) = NULL;
  69.     virtual void SetEffectParameters( LPD3DXEFFECT pEffect ) = NULL;
  70.     virtual void HandleMouseDown( INT x, INT y, BOOL* pbSetCapture ) = NULL;
  71.     virtual void HandleMouseMove( INT x, INT y ) = NULL;
  72.     virtual void HandleMouseUp() = NULL;
  73.     virtual BOOL IsDragging() = NULL;
  74.     CString& GetParamName() { return m_strParamName; }
  75.     CString& GetAnnotName() { return m_strAnnotName; }
  76.     void SetParamName(CString& strNew) { m_strParamName = strNew; }
  77.     void SetAnnotName(CString& strNew) { m_strAnnotName = strNew; }
  78.     virtual void SetParam( LPD3DXEFFECT pEffect, D3DXHANDLE hParam, BOOL bPickUpDefault ) = NULL;
  79.     D3DXHANDLE GetParamHandle() { return m_hParam; }
  80. };
  81.  
  82. /////////////////////////////////////////////////////////////////////////////
  83. // CDirLight 
  84.  
  85. class CDirLight : public CUIElement
  86. {
  87. private:
  88.     CUIElements* m_pUIElements;
  89.     D3DXMATRIXA16 m_matWorld;
  90.     float m_fTheta;
  91.     float m_fRho;
  92.     float m_fThetaDown;
  93.     float m_fRhoDown;
  94.     D3DXVECTOR3 m_vec;
  95.     HCURSOR m_hCur;
  96.     BOOL m_bDragging;
  97.     INT m_xDown;
  98.     INT m_yDown;
  99.     BOOL m_bSelected;
  100.  
  101. public:
  102.     CDirLight(CUIElements* pUIElements);
  103.  
  104.     virtual void Render( IDirect3DDevice9* pd3dDevice );
  105.     virtual void SetEffectParameters( LPD3DXEFFECT pEffect );
  106.     virtual BOOL IsDragging() { return m_bDragging; }
  107.     virtual void SetParam( LPD3DXEFFECT pEffect, D3DXHANDLE hParam, BOOL bPickUpDefault );
  108.     virtual void HandleMouseDown( INT x, INT y, BOOL* pbSetCapture );
  109.     virtual void HandleMouseMove( INT x, INT y );
  110.     virtual void HandleMouseUp();
  111.     void Update();
  112.     BOOL MouseOverLight(INT x, INT y);
  113. };
  114.  
  115. /////////////////////////////////////////////////////////////////////////////
  116.  
  117. //{{AFX_INSERT_LOCATION}}
  118. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  119.  
  120. #endif // !defined(AFX_UIELEMENTS_H__5E5BABDA_4318_4644_8CCA_A0599B3925DF__INCLUDED_)
  121.